package edu.seu.mart.service;

import edu.seu.mart.model.MsgType;
import edu.seu.mart.model.TextMsg;
import edu.seu.mart.utils.MsgKit;
import org.springframework.stereotype.Service;

import java.io.InputStream;
import java.util.Date;
import java.util.Map;

/**
 * 消息处理类
 */
@Service
public class MsgService implements IMsgService {

    public String process(InputStream inputStream) {
        String respMsg;
        String defaultMsg = "亲，我去睡觉了，一会儿再来找我玩吧！" +
                "请访问我们的官网：http://allsky.nat123.net/MicroMart/weixin/";
        // 解析微信服务器发过来的数据
        Map<String, String> reqMap = MsgKit.parseXml(inputStream);
        String fromUserName = reqMap.get("FromUserName");
        String toUserName = reqMap.get("ToUserName");
        String msgType = reqMap.get("MsgType");
        // 默认回复用户文本消息
        TextMsg textMsg = new TextMsg();
        textMsg.setToUserName(fromUserName);
        textMsg.setFromUserName(toUserName);
        textMsg.setCreateTime(new Date().getTime());
        textMsg.setMsgType(MsgType.TEXT.getName());

        if (MsgType.TEXT.getName().equals(msgType)) {
            String content = reqMap.get("Content");
            // 如果用户发送的是文本消息，则调用图灵机器人API接口响应
            return new TulingService().tlRespMsg(content, fromUserName, toUserName);
        } else if (MsgType.IMAGE.getName().equals(msgType)) {
            // 用户发送的是图片消息
            defaultMsg = "哇塞，好漂亮的图片！";
        } else if (MsgType.VOICE.getName().equals(msgType)) {
            // 用户发送的是语音消息
            defaultMsg = "哇塞，好动人的声音！";
        } else if (MsgType.EVENT.getName().equals(msgType)) {
            // 用户订阅公众号
            defaultMsg = "欢迎关注SKY的公众号！请访问我们的官网：http://allsky.nat123.net/MicroMart/weixin/";
        }
        textMsg.setContent(defaultMsg);
        respMsg = MsgKit.textMsgToXml(textMsg);
        return respMsg;
    }
}
